package cn.cdeden.resource.service;

import cn.cdeden.common.core.utils.page.TableDataInfo;
import cn.cdeden.common.mybatis.core.page.PageQuery;
import cn.cdeden.resource.domain.vo.SysOssVersionVo;
import cn.cdeden.resource.domain.vo.SysOssVo;

import java.util.Collection;
import java.util.List;

/**
 * OSS对象存储版本处理Service接口
 *
 * @author Yu.
 * @date 2024-12-04
 */
public interface ISysOssVersionService {


    /**
     * 生成文件的历史版本
     * @author Yu.
     * @Date 2024/12/5 15:41
     * @param sysOssVo
     * @return cn.cdeden.resource.domain.vo.SysOssVersionVo
     **/
    SysOssVersionVo buildResultEntity(SysOssVo sysOssVo);




    /**
     *  根据ossId和versionId 获取文件信息
     * @author Yu.
     * @Date 2024/12/6 16:23
     * @param ossId
     * @param versionId
     * @return cn.cdeden.resource.domain.vo.SysOssVersionVo
     **/
    SysOssVersionVo getByIdAndVersionId(Long ossId, String versionId);

    /**
     *  根据ossId获取 获取文件信息
     * @author Yu.
     * @Date 2024/12/6 16:22
     * @param ossId 储存编号
     * @return java.util.List<cn.cdeden.resource.domain.vo.SysOssVersionVo>
     **/
    List<SysOssVersionVo> getByIdList(Long ossId);

    /**
     *  根据ossIds集合获取 获取文件信息
     * @author Yu.
     * @Date 2024/12/11 16:52
     * @param ossIds 储存编号
     * @return java.util.List<cn.cdeden.resource.domain.vo.SysOssVersionVo>
     **/
    List<SysOssVersionVo> getByIdsList(Collection<Long> ossIds);

    /**
     *  根据ossId获取 获取文件信息 分页
     * @author Yu.
     * @Date 2024/12/6 16:28
     * @param ossId 储存编号
     * @param pageQuery 分页参数
     * @return cn.cdeden.common.core.utils.page.TableDataInfo<cn.cdeden.resource.domain.vo.SysOssVersionVo>
     **/
    TableDataInfo<SysOssVersionVo> getByIdPage(Long ossId, PageQuery pageQuery);




    /**
     * 删除数据
     * @author Yu.
     * @Date 2024/12/6 13:50
     * @param ossId oss的id
     * @param isValid
     * @return java.lang.Boolean
     **/
    Boolean deleteWithValidByOssIds(Collection<Long> ossId, Boolean isValid);

    /**
     * 根据ossId和versionId 删除数据
     * @author Yu.
     * @Date 2024/12/6 16:30
     * @param ossId
     * @param versionId
     * @return java.lang.Boolean
     **/
    Boolean deleteByOssIdAndVersionId(Long ossId, String versionId);




}
